<?php

namespace App\Utils;

use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;

class FileUpload
{
    /**
     * 上传多个文件
     * @param UploadedFile[] $files 文件数组
     * @param string $type 类型：pdf/video
     * @return array 文件URL数组
     */
    public static function uploadMultiple(array $files, string $type): array
    {
        $urls = [];
        $allowedMimeTypes = $type == 'pdf' 
            ? ['application/pdf'] 
            : ['video/mp4', 'video/mpeg', 'video/quicktime']; // 支持的视频格式

        // 获取基础URL
        $baseUrl = config('app.base_url', config('app.url'));

        foreach ($files as $file) {
            // 验证文件类型
            if (!$file->isValid() || !in_array($file->getMimeType(), $allowedMimeTypes)) {
                throw new \Exception("不支持的文件类型：{$file->getClientOriginalName()}");
            }

            // 生成存储路径（按类型和日期分类）
            $path = "knowledge/{$type}/" . date('Ymd');
            $filename = uniqid() . '.' . $file->getClientOriginalExtension();
            $file->storeAs($path, $filename, 'public');

            // 生成访问URL
            $urls[] = $baseUrl . Storage::url("{$path}/{$filename}");
        }

        return $urls;
    }
}